﻿

namespace LxCFD
{
    public class PhysicalModel : HeadBase
    {
        public PhysicalTypes? PhysicalType;
        public void SetPhysicalType(PhysicalTypes? physicalType)
        {
            this.PhysicalType = physicalType;
            if (physicalType == null) return;
            if (MaterialData == null || MaterialData.PhysicalType != physicalType)
            {
                MaterialLib mlib = new MaterialLib();
                MaterialData = mlib.GetDefaultMaterial((PhysicalTypes)physicalType);
            }
        }
        public MaterialData MaterialData;

        public FlowTypes? FlowType;
        public SIMPLEMethods SolvingMethod = SIMPLEMethods.SIMPLE;
        public ConvectionSchemes ConvectionScheme = ConvectionSchemes.SecondOrderUpwind;
        public Value1Base<Vector3d> InitialVelocity = Value1Const.Vector0;

        public bool IsGravityEnabled = false;
        public Vector3d Gravity = new Vector3d(0, 0, -9.8);

        public bool IsEnergyEnabled = false;
        public Value1Base<double> InitialTemperature = new Value1Const.Double(300);

        public RaditionTypes? RaditionType;

        public double MinWallDistanceLimit = 1e-6;
        public bool IsBoussinesqEnabled = false;
        public double ReferenceTemperature = 300;

    }
}

